﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Security;
//using System.Text;
//using System.Web;
//using System.Web.Mvc;
//using Super.Framework.Common;
//using Super.Framework.EF;
//using Super.Mvc;
//using Super.Mvc.Form;

//namespace Super.Service
//{

//    #region web 授权

//    public class AuthDescriptionAttribute : Attribute
//    {


//        /// <summary>
//        /// 描述名称
//        /// </summary>
//        public string Name { get; set; }

//        /// <summary>
//        /// 排序
//        /// </summary>
//        public int No { get; set; }

//        /// <summary>
//        /// type 0= 平台方法，1=客户方法
//        /// </summary>
//        public int Type { get; set; }

//    }

//    public class WebPower : ActionFilterAttribute
//    {
//        //继承筛选器
//        public bool IsNeedLogin { get; set; }

//        public string LoginUrl { get; set; }

//        public override void OnActionExecuting(ActionExecutingContext filterContext)
//        {
//            var returnUrl = filterContext.HttpContext.Request.Url;

//            if (!IsNeedLogin) //不需要
//            {
//                return;
//            }

//            if (LoginUrl.IsNullOrEmpty())
//            {
//                LoginUrl = "/OAuth?returnUrl=" + returnUrl;
//            }

//            var loginUser = SysInfo.LoginUser;
//            if (loginUser == null || loginUser.Entity == null)
//            {
//                filterContext.HttpContext.Response.Redirect(LoginUrl);
//            }
//        }
//    }
//    public class AdminPower : ActionFilterAttribute
//    {
//        //继承筛选器
//        public bool IsNeedLogin { get; set; }

//        public string LoginUrl { get; set; }

//        public override void OnActionExecuting(ActionExecutingContext filterContext)
//        {
//            if (!IsNeedLogin) //不需要
//            {
//                return;
//            }

//            if (LoginUrl.IsNullOrEmpty())
//            {
//                LoginUrl = "/home/login";
//            }

//            var loginUser = SysInfo.LoginUser;
//            if (loginUser == null || loginUser.Entity == null)
//            {
//                filterContext.HttpContext.Response.Redirect(LoginUrl);
//            }
//        }
//    }
//    #endregion

//    #region app 接口授权 基于 token

//    public class AppAuthAttribute : AuthorizeAttribute
//    {
//        private const string _securityToken = "token";

//        public override void OnAuthorization(AuthorizationContext filterContext)
//        {
//            if (Authorize(filterContext))
//            {
//                return;
//            }

//            HandleUnauthorizedRequest(filterContext);
//        }

//        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
//        {
//            base.HandleUnauthorizedRequest(filterContext);
//        }

//        private bool Authorize(AuthorizationContext actionContext)
//        {
//            try
//            {
//                HttpRequestBase request = actionContext.RequestContext.HttpContext.Request;
//                string token = request.Params[_securityToken];
//                return SecurityService.IsTokenValid(token, GetIP(request), request.UserAgent);
//            }
//            catch (Exception)
//            {
//                return false;
//            }
//        }

//        public static string GetIP(HttpRequestBase request)
//        {
//            string ip = request.Headers["X-Forwarded-For"];

//            if (string.IsNullOrEmpty(ip))
//            {
//                ip = request.UserHostAddress;
//            }

//            return ip;
//        }
//    }
//    #endregion
//}
